package acciones;

import java.util.Vector;

import persistencia.ArticuloDAO;
import persistencia.AutorDAO;
import persistencia.PersonaDAO;
import persistencia.RevisorDAO;
import dominio.Articulo;
import dominio.Autor;
import dominio.Persona;
import dominio.Revisor;

import com.opensymphony.xwork2.ActionSupport;

public class AdministrarUsuarios extends ComprobarSesion {
	private static final long serialVersionUID = 1L;
	private Vector<Persona> usuarios = new Vector<Persona>();
	private String roles;
	private Persona persona;
	private String opcion;

	public String execute() {
		try {
			persona = checkSesion("persona");
			if (persona != null) {
				
				//CARGA EL VECTOR DE USUARIOS REVISORES + AUTORES
				Vector<Autor> aut = AutorDAO.getAutores();
				Vector<Revisor> rev = RevisorDAO.getRevisores();
				for (int i = 0; i < aut.size(); i++) {
					usuarios.add((Persona) aut.get(i));
					
				}
				for (int i = 0; i < rev.size(); i++) {
					usuarios.add((Persona) rev.get(i));
				}
				
				
				if (opcion.equalsIgnoreCase("Guardar Cambios")) {
					String[] tokens = roles.split(",( )*");
					int j = 0;
					for (String t : tokens) {
						if (!usuarios.get(j).getRol().equalsIgnoreCase(t)) {
							if (t.equalsIgnoreCase("Autor")) {
								AutorDAO.castRevisorToAutor(usuarios.get(j));
							} else {
								RevisorDAO.castAutorToRevisor(usuarios.get(j));
							}
						}
						j++;
					}
					usuarios.clear();
					aut = AutorDAO.getAutores();
					rev = RevisorDAO.getRevisores();
					for (int i = 0; i < aut.size(); i++) {
						usuarios.add((Persona) aut.get(i));
						
					}
					for (int i = 0; i < rev.size(); i++) {
						usuarios.add((Persona) rev.get(i));
					}
				}
				return SUCCESS;
			} else {
				return ERROR;
			}
		} catch (Exception e) {
			return ERROR;
		}
	}

	public Persona getPersona() {
		return persona;
	}

	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	public Vector<Persona> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(Vector<Persona> usuarios) {
		this.usuarios = usuarios;
	}

	public String getOpcion() {
		return opcion;
	}

	public void setOpcion(String opcion) {
		this.opcion = opcion;
	}

	public String getRoles() {
		return roles;
	}

	public void setRoles(String roles) {
		this.roles = roles;
	}

}
